package com.fcat.common.user.util;

import com.alibaba.fastjson.JSONObject;
import com.fcat.base.common.util.StrUtil;
import com.fcat.common.user.enums.StateCode;
import com.fcat.springboot.mybatis.util.JsonUtil;
import feign.FeignException;

public class KeycloakUtil {
    //    public static JSONObject getMsg(FeignException fe){
//        int httpCode=fe.status();
//        JSONObject errObj=null;
//        String errMsg=fe.getMessage();
//        if(fe.getMessage()!=null && fe.getMessage().contains("content:")){
//            int initIndex=fe.getMessage().indexOf("content:");
//            if(initIndex!=-1){
//                String strObj=fe.getMessage().substring(initIndex+8);
//                errObj=JSONObject.parseObject(strObj);
//            }
//        }
//        if(errObj!=null){
//            errMsg= errObj.getString("errorMessage");
//            if(StrUtil.isBlank(errMsg)){
//                errMsg=errObj.getString("error_description");
//            }
//
//        }
//        switch (httpCode){
//            case 401:
//                if(errMsg.equals("Invalid user credentials")) {
//                    return JsonUtil.getFailJsonObject(StateCode.INVALID_TOKEN.getCode(),StateCode.INVALID_TOKEN.getMsg());
//                }
//                break;
//        }
//        return JsonUtil.getFailJsonObject(fe.getMessage());
//    }
    public static JSONObject getMsg(FeignException fe) {
        int httpCode = fe.status();
        JSONObject errObj = null;
        String errMsg = "";
        String message = fe.getMessage();
        if (message != null) {
            int leftBraceIndex = message.indexOf("[");
            int rightBraceIndex = message.indexOf("]");
            if (leftBraceIndex != -1 && rightBraceIndex != -1)
                errMsg = message.substring(leftBraceIndex + 1, rightBraceIndex);
        }
        switch (httpCode) {
            case 401:
                if (errMsg.contains("401 Unauthorized"))
                    return JsonUtil.getFailJsonObject(Integer.valueOf(StateCode.INVALID_TOKEN.getCode()), StateCode.INVALID_TOKEN.getMsg());
                break;
        }
        return JsonUtil.getFailJsonObject(fe.getMessage());
    }

    public static String getMsg(Exception e) {
        JSONObject errObj = null;
        if (e.getMessage() != null && e.getMessage().contains("content:")) {
            int initIndex = e.getMessage().indexOf("content:");
            if (initIndex != -1) {
                String strObj = e.getMessage().substring(initIndex + 8);
                errObj = JSONObject.parseObject(strObj);
            }
        }
        if (errObj != null) {
            String err = errObj.getString("errorMessage");
            if (StrUtil.isBlank(err)) {
                err = errObj.getString("error_description");
            }
            if (err.equals("Invalid user credentials")) {
                return "密码错误";
            } else {
                return err;
            }
        }
        return e.getMessage();
    }
}
